package businessLogic.service;

import businessLogic.facade.MateriaFacade;
import dao.GrupoDAO;
import entity.Grupo;
import entity.Materia;
import java.util.List;
import javax.persistence.EntityManager;
import vo.GrupoVO;
import vo.IValueObject;
import vo.MateriaVO;

/**
 *
 * @author Alexander
 */
public class GrupoService implements IService {

    @Override
    public void persist(IValueObject vo, EntityManager em) {
        Grupo entity = new Grupo();
        entity.setId(((GrupoVO)vo).getId());
        entity.setNumeroGrupo(((GrupoVO)vo).getNumeroGrupo());
        //TODO
        //entity.setCalificaciones(((GrupoVO)vo).getCalificaciones());
//        entity.setDiasDeClase(((GrupoVO)vo).getDiasDeClase());
        
        Materia materia = new Materia();
        MateriaVO materiaVO = (MateriaVO)new MateriaFacade().find(((GrupoVO)vo).getMateriaId());
        materia.setCodigo(materiaVO.getCodigo());
        materia.setNombre(materiaVO.getNombre());
        entity.setMateria(materia);
        
        new GrupoDAO().persist(entity, em);
    }

    @Override
    public IValueObject find(Object id, EntityManager em) {
        return new GrupoDAO().find(id, em);
    }

    @Override
    public void update(IValueObject vo, EntityManager em) {
        Grupo entity = new Grupo();
        entity.setId(((GrupoVO)vo).getId());
        entity.setNumeroGrupo(((GrupoVO)vo).getNumeroGrupo());
        //TODO
        //entity.setCalificaciones(((GrupoVO)vo).getCalificaciones());
        //entity.setDiasDeClase(((GrupoVO)vo).getDiasDeClase());
        
        //entity.setMateria(((GrupoVO)vo).getMateriaId());
        
        new GrupoDAO().update(entity, em);
    }

    @Override
    public void delete(Object id, EntityManager em) {
        new GrupoDAO().delete(id, em);
    }

    @Override
    public List<IValueObject> getList(EntityManager em) {
        return new GrupoDAO().getList(em);
    }
    
}
